#pragma once
/**
* N&aring;gra enkla funktioner f&ouml;r logiska operatorer.
*/
class Bit
{
public:

	Bit(void)
	{
	}

	char and(char a, char b)
	{
		if(a == '1' && b == '1')
			return '1';
		else
			return '0';
	}

	char or(char a, char b)
	{
		if(a == '1' || b == '1')
			return '1';
		else
			return '0';
	}
	char xor(char a, char b)
	{
		if(a != b)
			return '1';
		else
			return '0';
	}
	char not(char a)
	{
		if(a == '1')
			return '0';
		else
			return '1';
	}
	char nand(char a, char b)
	{
		if(a == '1' && b == '1')
			return '0';
		else
			return '1';
	}
	char nor(char a, char b)
	{
		if(a == '1' || b == '1')
			return '0';
		else
			return '1';
	}

	/** 
	* Funktion enligt bilden i uppgiften.
	*/
	void add(char a, char b, char ci, char &sum, char &cu)
	{
		char n1 = xor(a,b);
		char n2 = or(a,b);
		char n3 = and(ci,n2);
		char n4 = and(a,b);
		cu = or(n3,n4);
		sum = xor(n1,ci);
	}

	~Bit(void)
	{
	}
};
